home *** CD-ROM | disk | FTP | other *** search
/ PC Elektro 3 / PC-Elektro-3-cd1.bin / KBan 2.0 / KBANSRC.LZH / SRC / PROG / KBANDATA / KBANDATA.H < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-10  |  2.1 KB  |  78 lines

  1. /*
  2.  * a header of the class KBAN_DATA
  3.  * Copyright (C) 1996, 1997 Kazutaka Hirata <khirata@jove.acs.unt.edu>
  4.  */
  5.  
  6. #ifndef _KBANDATA_H_
  7. #define _KBANDATA_H_
  8.  
  9. #include "prim.h"
  10. #include "complist.h"
  11. #include "../common/flag.h"
  12. #include "../finfo.h"
  13.  
  14. class KBAN_DATA {
  15.   PRIMITIVE      m_primitive;
  16.   COMPONENT_LIST m_component_list;
  17. public:
  18.   KBAN_DATA(void)
  19.     : m_primitive() {}
  20.   KBAN_DATA(const KBAN_DATA& src)
  21.     : m_primitive     (src.m_primitive     ),
  22.       m_component_list(src.m_component_list) {}
  23.  
  24.   void                  operator=(const KBAN_DATA& src);
  25.  
  26.         PRIMITIVE&      primitive(void)       { return m_primitive; }
  27.   const PRIMITIVE&      primitive(void) const { return m_primitive; }
  28.  
  29.         COMPONENT_LIST& component_list(void)       { return m_component_list; }
  30.   const COMPONENT_LIST& component_list(void) const { return m_component_list; }
  31.  
  32.   void clear(void);
  33.  
  34.   XY   get_max(void) const;
  35.   XY   get_min(void) const;
  36.  
  37.   void shift(const XY& ac_dif, KBAN_DATA& target) const;
  38.  
  39.   void unselect(void);
  40.   void select_items_in_block(const XY& ac1, const XY& ac2);
  41.   void collect_selected_items(KBAN_DATA& dst) const;
  42.   void remove_selected_items(void);
  43. private:
  44.   int  load_170(FILE_NEW& fp);
  45.   uint load_get_version(FILE_NEW& fp) const;
  46.   int  load_200a8 (FILE_NEW& fp);
  47.   int  load_200b18(FILE_NEW& fp);
  48. public:
  49.   int  load(FILE_NEW& fp);
  50.   int  save(FILE_NEW& fp) const;
  51.   void collect_aperture(APT_TABLE& apt_pin_table, APT_TABLE& apt_line_table) const;
  52.  
  53.   void operator+=(const KBAN_DATA& target);
  54.   bool empty() const;
  55.   void rotate_90();
  56.   void limit_drill_size(uint drill);
  57. };
  58.  
  59. class ACTIVE_LAYER {
  60.   uint        m_no;
  61.   FLAG        m_pin_on_common;
  62. public:
  63.   ACTIVE_LAYER(uint no) {
  64.     m_no = no;
  65.     m_pin_on_common.set(false);
  66.   }
  67.   uint        get(void) const { return m_no; }
  68.   void        set(uint no) { m_no = no; }
  69.   FLAG&       pin_on_common() { return m_pin_on_common; }
  70.   const FLAG& pin_on_common() const { return m_pin_on_common; }
  71.  
  72.   uint        get_pin_layer(void) const {
  73.     return pin_on_common().get() ? LAYER_PATTERN_COMMON : get();
  74.   }
  75. };
  76.  
  77. #endif /* _KBANDATA_H_ */
  78.